import logging
import jsonschema
from config import BASE_DIR

from api.ihrmLoginApi import IhrmLoginApi
from common.assert_tools import assert_use
from common.logging_use import init_log_config


# 定义 测试类
class TestIhrmLogin(object):
    # 初始化日志配置文件
    init_log_config(BASE_DIR + "/log/ihrm_login.log")

    # 定义测试方法 - 登录成功
    def test01_login_success(self):
        # 调用自己封装的 api，发送登录请求，得到响应结果
        login_data = {"mobile": "13800000002", "password": "123456"}
        resp = IhrmLoginApi.login(login_data)

        # print(resp.json())
        logging.info(f"登录成功了,hehe：{resp.json()}")

        # assert_use(resp, 200, True, 10000, "操作成功")

        assert 200 == resp.status_code
        # 改写为 全量字段校验
        # 定义规则
        schema = {
            "type": "object",
            "properties": {
                "success": {"const": True},
                "code": {"const": 10000},
                "message": {"pattern": "操作成功"},
                "data": {"type": "string"}
            },
            "required": ["success", "code", "message", "data"]
        }
        # 准备待校验数据
        # 校验
        jsonschema.validate(instance=resp.json(),schema=schema)

    # 定义测试方法 - 手机号未注册
    def test02_mobile_not_exists(self):
        # 调用自己封装的 api，发送登录请求，得到响应结果
        login_data = {"mobile": "13800785432", "password": "123456"}
        resp = IhrmLoginApi.login(login_data)
        assert_use(resp, 200, False, 20001, "用户名或密码错误")

    # 定义测试方法 - 无参
    def test14_no_params(self):
        # 调用自己封装的 api，发送登录请求，得到响应结果
        login_data = None
        resp = IhrmLoginApi.login(login_data)
        assert_use(resp, 200, False, 99999, "抱歉，系统繁忙，请稍后重试")
